package com.czxy.servlet;

import cn.itcast.servlet.BaseServlet;
import com.czxy.domain.Order;
import com.czxy.service.OrderService;
import com.czxy.utils.PayUtils;

import javax.servlet.annotation.WebServlet;
import java.io.IOException;

@WebServlet("/payServlet")
public class PayServlet  extends BaseServlet {


    /**
     * 获取订单的支付状态,
     * 支付成功的时候 要更改数据库的数据
     */
    public void getOrderState() throws IOException {

        //1.获取订单oid
        String oid = getRequest().getParameter("oid");
        //2.调用方法访问微信支付服务器获取订单支付状态
        String payStatus = PayUtils.getOrderPayStatus(oid);
        //3.判断状态是否为 "SUCCESS"  如果是 表示支付成功 更新数据
        //  如果不是 则不更新
        //4.给前端做出响应  {"message":"支付成功","flag":true }  {"message":"支付失败","flag":false }
        if("SUCCESS".equalsIgnoreCase(payStatus)){
            //表示支付成功
            OrderService service = new OrderService();
            service.updateOrderState(oid, 2);

            getResponse().getWriter().write("{\"message\":\"支付成功\",\"flag\":true }");
        }else{
           //表示支付失败
            getResponse().getWriter().write("{\"message\":\"支付失败\",\"flag\":false }");
        }

    }


    /**
     * 更新 订单的 收货人信息, 获取支付字符串
     * @return
     */
    public String updateOrder(){
        //1.接受参数 (接收收货人信息  )
        Order order = toBean(Order.class);
        //2.调用 service把收货人信息添加到数据库中
        OrderService service = new OrderService();
        service.updateOrder(order);
        //3.获取支付字符串
        String payStr = PayUtils.pay(order.getOid(),"127.0.0.1","1","czxy2021J34","sdsdd");
        System.out.println("支付字符串payStr="+payStr);
        //4.把支付字符串和订单的id 存储到request域中
        getRequest().setAttribute("order", order);
        getRequest().setAttribute("payStr", payStr);

        //5.把请求转发给confirm.jsp
        return "/jsp/confirm.jsp";
    }

}
